package com.lancoo.ccas53.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lancoo.ccas53.entity.RuleTimeProhibit;
import com.lancoo.ccas53.pojo.common.PageInfo;
import com.lancoo.ccas53.pojo.vo.*;

import java.util.List;

/**
 * <p>
 * 日期禁排 服务类
 * </p>
 *
 * @author quin.song
 * @since 2024-05-20
 */
public interface RuleTimeProhibitService extends IService<RuleTimeProhibit> {
    /**
     * 获取时间禁排
     *
     * @param taskId
     * @param optionType
     * @param optionId
     * @return
     */
    List<RuleTimeProhibit> getTimeProhibit(Integer taskId, Integer optionType, Long optionId, Integer hourType);

    /**
     * 设置时间禁排
     *
     * @param taskId
     * @param optionType
     * @param optionIds
     * @param ruleTimeProhibits
     * @return
     */
    boolean setTimeProhibit(Integer taskId, Integer optionType, String optionIds, List<RuleTimeProhibit> ruleTimeProhibits);


    PageInfo<RoomWithRuleVo> getRoomListWithRule(Integer taskId, Integer campusId, Integer buildingId, Integer floor, Integer roomType, String keyword, String baseCollegeId, Integer dataRange, Integer currentPage, Integer pageSize);


    void clearProhibit(Integer taskId, Integer optionType, List<Long> optionIds, boolean a);

    RuleStatic getRoomRuleStatic(Integer taskId, Integer campusId, Integer buildingId, Integer floor, Integer roomType, String keyword, String baseCollegeId, Integer dataRange, Integer currentPage, Integer pageSize);

    PageInfo<TeachingClassWithRuleVo> getTeachingClassListWithRule(Integer taskId, String baseCollegeId, String courseTypeId, Integer courseNature, String keyword, Integer dataRange, Integer currentPage, Integer pageSize);

    RuleStatic getTeachingClassRuleStatic(Integer taskId, String baseCollageId, String courseTypeId, Integer courseNature, String keyword, Integer dataRange, Integer currentPage, Integer pageSize);

    boolean setTeachingClassProhibit(Integer taskId, Integer optionType, List<TeachingClassWithRuleVo> teachingClassWithRuleVos, List<RuleTimeProhibit> ruleTimeProhibits);

    void clearTeachingClassProhibit(Integer taskId, Integer optionType, List<TeachingClassWithRuleVo> teachingClassList);

    PageInfo<TeacherWithRuleVo> getTeacherListWithRule(Integer taskId, String baseCollegeId, String keyword, Integer dataRange, Integer currentPage, Integer pageSize);

    RuleStatic getTeacherRuleStatic(Integer taskId, String baseCollegeId, String keyword, Integer dataRange, Integer currentPage, Integer pageSize);

    void setCourseLimit(Integer taskId, CourseLimitSetVo vo);

    void clear(Integer taskId, String baseCollegeId);

    void copy(Integer taskId, String schoolId, String term, String baseCollegeId);

    void synchronizeUpdate(Integer taskId);
}
